﻿using RockBus.DataContracts;
using RockBus.DataContracts.ConfigurationService;

namespace RockBus.ConfigurationRepository.Interfaces
{
    public interface IConfigurationRepository
    {
        void AddOrUpdateSubscriberConfiguration(SubscriberConfiguration request);

        void RemoveSubscribers(RemoveSubscribersRequest request);

        void RemoveSubscriptions(RemoveSubscriptionsRequest request);

        void AddOrUpdatePublisherConfiguration(PublisherConfiguration request);

        void RemovePublishers(RemovePublishersRequest request);

        void RemoveReceivePorts(RemoveReceivePortsRequest request);

        void RemoveAllSubscribers(RemoveAllSubscribersRequest request);

        void RemoveAllPublishers(RemoveAllPublishersRequest request);

        SubscriberConfiguration GetSubscriberConfiguration();

        PublisherConfiguration GetPublisherConfiguration();

        SubscriberInfo GetSubscriber(GetSubscriberRequest request);

        InternalConfiguration GetInternalConfiguration();

        void SetInternalConfiguration(InternalConfiguration configuration);

        void ClearAllClients();
    }
}